package com.example.study.jetpack
//https://juejin.cn/post/6997217571208445965
class jectpack新成员splashscreen {
    /*android 12 引入了splash screen（sipulaishi sgui
    ng）功能意图打造自由的，丰富的应用启动效果。androidx也推出一个同名api——pl
    ashScreen.这是用来兼容低版本的SplashScreen功能库

    jetpack SplashScreen是向后兼容Android12 SplashScreen功能的开发库。
    其最早支持到android6（api23）

    1.1作用以及局限
        SplashScreen功能用于打造的动画分为进场和退场两部分；前者负责icon，icon
        动画以及平拍logo等基本信息，后者则用于展示整体或icon试图过渡到目标画面的
        动画效果
        对于退场部分，无论是否运行在12上，jetpackSplashScreen库都能达到
        android12同等效果；但进场部分如果是运行在低版本上，暂时存在些局限。
        ·暂不支持展示icon动画animatedVectorDrawable，icon背景
        IconBackgroundColor,品牌logoBrandingImage
        splashScreen的实现原理，面向低版本的进场效果本质上是一个LayerDrawable
    2.2依赖
        implementation "androidx.core:core-splashscreen:1.0.0-alpha01"
    2.3SplashScreen库预设主题
        SplashScreen库针对启动画面的打造定义了专用的Attr，比如设置Icon和画面背景的
        windowSplashScreenAnimatedIcon和WindowSplashScreenBackground，
        以及设置启动画面退出后的Activity主题的postSplashScreenTheme等
        低版本并不支持Icon动画，也就谈不上配置时长，但库还是提供了相关属性
        windowSplashScreenAnimationDuration
        如下是面向低版本的主题
        <style name="Theme.SplashScreen" parent="Theme.SplashScreenBase">
    <item name="postSplashScreenTheme">?android:attr/theme</item>
    <item name="windowSplashScreenAnimationDuration">@integer/default_icon_animation_duration</item>
    <item name="windowSplashScreenBackground">@android:color/background_light</item>
    <item name="windowSplashScreenAnimatedIcon">@android:drawable/sym_def_app_icon</item>
</style>

<style name="Theme.SplashScreenBase" parent="android:Theme.NoTitleBar">
    <item name="android:windowBackground">@drawable/compat_splash_screen</item>
    <item name="android:opacity">opaque</item>
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
    <item name="android:fitsSystemWindows">false</item>
    <item name="android:statusBarColor">@android:color/transparent</item>
    <item name="android:navigationBarColor">@android:color/transparent</item>
</style>

    比较关键的是父主题的SplashScreenBase设置了windowBackground属性，其指向的
    drawable负责展示低版本的启动动画
    原理很简单：读取windowSplashScreenBackground设置的背景ColorDrawable和
    windowSplashScreenAnimatedIcon设置的图标Drawable，图标Drawable放置Drawable的
    中央，然后组成Layer Drawable。和以前我们的启动动画思路类似
    */

    /*流程
    要定制icon动画效果需要转为svg，png转为svg工具网站www.pngtosvg.com/
    通过AS自带的Vector Asset Tool和Animated Vector Drawable标签，可以
    将SVG扩展成格式效果的矢量图动画文件
    */


}